package com.okoj.excel_lib_rary.util;

import android.content.Context;
import android.text.TextUtils;
import android.widget.Toast;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.okoj.excel_lib_rary.config.Config;
import com.okoj.excel_lib_rary.data.RemoteResp;
import com.okoj.excel_lib_rary.data.entity.Kind;
import com.okoj.excel_lib_rary.data.entity.RemoteFile;
import com.okoj.excel_lib_rary.data.entity.Result;
import com.okoj.excel_lib_rary.data.net.WpsClient;
import com.okoj.excel_lib_rary.listener.BizCallback;
import com.okoj.excel_lib_rary.listener.LoadDataListener;
import com.okoj.excel_lib_rary.ui.EditActivity;
import com.okoj.excel_lib_rary.ui.FileListActivity;

import java.util.List;

import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
import retrofit2.http.PUT;

import static com.okoj.excel_lib_rary.util.FileUtil.getServerArgumentFileType;

public class WpsHelper {

    /**
     * 电子表格
     */
    public final static String FORM = "s";

    /**
     * 文档
     */
    public final static String WORD = "w";
    /**
     * 演示文档
     */
    public final static String PPT = "p";

    /**
     * 新建表格
     */
    public static void creteForm(Context context){
        EditActivity.createFile(context,FORM);
    }

    /**
     * 新建文档
     */
    public static void creteWord(Context context){
        EditActivity.createFile(context,WORD);
    }

    /**
     * 新建演示
     */
    public static void cretePPT(Context context){
        EditActivity.createFile(context,PPT);
    }

    /**
     * 获取用户云端文件
     */
    public static void showRemoteFile(Context context){
        FileListActivity.showFile(context);
    }

    /**
     * 打开本地文件
     */
    public static void openLocalFile(Context context,String filePath){
        String serverArgumentFileType = "";
        try {
            serverArgumentFileType = getServerArgumentFileType(filePath);
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(context,"请检查文件类型",Toast.LENGTH_SHORT).show();
            return;
        }
        EditActivity.editLocalFile(context,filePath,serverArgumentFileType);
    }

    public static void openLocalFile(Context context,String filePath,String fileType){
        EditActivity.editLocalFile(context,filePath,fileType);
    }

    /**
     * 打开云端文件
     * @param context
     * @param fileId
     * @param fileName
     */
    public static void openRemoteFIle(Context context,String fileId,String fileName){
        String serverArgumentFileType;
        try {
             serverArgumentFileType = getServerArgumentFileType(fileName);
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }
        EditActivity.editRemoteFile(context,fileId, serverArgumentFileType);
    }

    /**
     * 预览模板文件
     * @param context
     * @param templateId
     * @param fileName
     */
    public static void openTemplate(Context context,String templateId,String fileName){
        String serverArgumentFileType;
        try {
            serverArgumentFileType = getServerArgumentFileType(fileName);
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }
        EditActivity.previewTemplateFile(context,templateId,serverArgumentFileType);
    }

    public static void login(String token,String userId){
        Config appConfig = WpsClient.getAppConfig();
        appConfig.setToken(token);
        appConfig.setUserId(userId);
    }

    public static void logout(){
        Config appConfig = WpsClient.getAppConfig();
        appConfig.setToken("");
        appConfig.setUserId("");
    }


    /**
     *
     *   -------------暴露一些接口， 方便调用  START ---------------------
     */


    /**
     *
     * 获取用户编辑过的文件
     * 需要登录
     *
     */
    public static void getPersonFile(LoadDataListener<List<RemoteFile>> loadDataListener){
        RemoteResp.getPersonFile(loadDataListener);
    }

    /**
     *
     * 获取模板分类：
     * 不需要登录
     *
     */
    public static void getAllKinds(LoadDataListener<List<Kind>> loadDataListener){
        RemoteResp.getAllKind(loadDataListener);
    }

    /**
     *
     *   -------------暴露一些接口， 方便调用  END ---------------------
     *
     */


    private static BizCallback bizCallback;
    public static void setBizCallBack(BizCallback callBack){
        bizCallback = callBack;
    }

    public static BizCallback getBizCallBack(){
        return bizCallback;
    }

}
